package dou.net.socket;

import java.io.IOException;
import java.nio.ByteBuffer;

/**
 * 定义了非阻塞客户端套接字对象的基本方法
 * @author wizardc
 */
public interface IClientSocket
{
    /**
     * 读取该套接字对象的输入流
     * @return 接收到得字节大小
     * @throws IOException 当出现 IO 异常时抛出该异常
     * @throws InvalidProtocolException 当协议不正确时抛出该异常
     */
    int readBuffer() throws IOException, InvalidProtocolException;

    /**
     * 写入该套接字对象的输出流
     * @throws IOException 当出现 IO 异常时抛出该异常
     */
    void writeBuffer() throws IOException;

    /**
     * 向该客户端发送数据
     * @param byteBuffer 用于发送的字节缓冲对象
     */
    void send(ByteBuffer byteBuffer);

    /**
     * 关闭该套接字对象
     * @throws IOException 当出现 IO 异常时抛出该异常
     */
    void close() throws IOException;
}
